package sym.qrcode.style;

import java.awt.Color;
import java.awt.image.BufferedImage;

import sym.qrcode.image.OutputImage;

public class StyleFactory {
	public PlainStyle createPlainStyle(OutputImage outputMatrix,Color c,Color iColor, Color oColor){
		return new PlainStyle(outputMatrix,c,iColor,oColor);
	}
	public SmallIconStyle createSmallIconStyle(BufferedImage mosaicImage,
			OutputImage outputMatrix) {
		return new SmallIconStyle(mosaicImage, outputMatrix);
	}
	
	public SmallIconStyle createSmallIconStyle(BufferedImage mosaicImage,
			OutputImage outputMatrix,BufferedImage bImage) {
		return new SmallIconStyle(mosaicImage, outputMatrix,bImage);
	}
	
	public SmallIconStyle createSmallIconStyle(BufferedImage mosaicImage,
			OutputImage outputMatrix,BufferedImage bImage, BufferedImage findImage) {
		return new SmallIconStyle(mosaicImage, outputMatrix,bImage,findImage);
	}

	public RoundCornerStyle createRoundCornerStyle(OutputImage outputMatrix) {
		return new RoundCornerStyle(outputMatrix);
	}

	public RoundCornerStyle createGradientRoundCornerStyle(
			OutputImage outputMatrix, int slope, Color b, Color m, Color e) {
		return new GradientRoundCornerStyle(outputMatrix, slope, b, m, e);
	}

	public TextureStyle createTextureStyle(OutputImage outputMatrix,
			BufferedImage fImage, BufferedImage bImage, BufferedImage dImage,
			BufferedImage iImage, BufferedImage oImage) {
		return new TextureStyle(outputMatrix, fImage, bImage, dImage,iImage,oImage);
	}
	
	public TextureStyle createTextureStyleWithDirection(OutputImage outputMatrix,
			BufferedImage fImage, BufferedImage bImage, BufferedImage dImage,
			BufferedImage iImage, BufferedImage oImage, int direction) {
		return new TextureStyle(outputMatrix, fImage, bImage, dImage,iImage,oImage,direction);
	}
	
	public ProjectionStyle createProjectionStyle(OutputImage outputMatrix){
		return new ProjectionStyle(outputMatrix);
	}
	
	public PointLightStyle createPointLightStyle(OutputImage outputMatrix) {
		return new PointLightStyle(outputMatrix);
	}

    public ImageGenerator createEditStyle(OutputImage outputImage) {
        return new EditStyle(outputImage);
    }
}
